www.gusucode.com > vc++ 远程控制示例源程序-源码程序 > vc++ 远程控制示例源程序-源码程序\code\PeerYouC\CreateDirDlg.cpp

    // CreateDirDlg.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "peeryouc.h"
#include "CreateDirDlg.h"
#include "PeerFileListView.h"
#include "PeerFileremoteListView.h"
#include "sortlistctrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCreateDirDlg dialog


CCreateDirDlg::CCreateDirDlg(bool p,CWnd* pParent /*=NULL*/)
	: CDialog(CCreateDirDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCreateDirDlg)
	m_dir = _T("");
	pre=p;
	parent=pParent;
	//}}AFX_DATA_INIT
}


void CCreateDirDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCreateDirDlg)
	DDX_Text(pDX, IDC_DIRNAME, m_dir);
	DDV_MaxChars(pDX, m_dir, 256);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCreateDirDlg, CDialog)
	//{{AFX_MSG_MAP(CCreateDirDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCreateDirDlg message handlers

void CCreateDirDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
	CSortListCtrl *ls;
	if(pre)
	{
		CPeerFileListView* lv=(CPeerFileListView*)parent;
		lv->Retrive();
		ls=&lv->list;
	}

	else
	{
		CPeerFileRemoteListView *rv=(CPeerFileRemoteListView*)parent;
		rv->Retrive();
		ls=&rv->list;
	}
	for(int i=0;i<ls->GetItemCount();i++)
		if(m_dir==ls->GetItemText(i,0))
		{
			MessageBox("已经由此目录");
			return;
		}
	if(pre)
	{
		CPeerFileListView* lv=(CPeerFileListView*)parent;
		CString dir=lv->path+"\\"+m_dir;
		if(!CreateDirectory(dir,NULL))
		{
			MessageBox(dir+"创建失败");
		}
		else
		{
			lv->Retrive();
		}
	}
	else
	{
		CPeerFileRemoteListView *rv=(CPeerFileRemoteListView*)parent;
		CString dir=rv->path+"\\"+m_dir;
		WSAEVENT hEvent=WSACreateEvent();
		if(hEvent==WSA_INVALID_EVENT)
		{
			goto there;
		}
		SOCKET s;
		if(!PeerCreateSocket(&s,PEER_STREAM))
		{
			WSACloseEvent(hEvent);
			goto there;
		}
		if(!PeerConnectSocket(s,ADDRESS,7788))
		{
			WSACloseEvent(hEvent);
			closesocket(s);
			goto there;
		}
		DWORD retLen;
		FILEINFO fi;
		COMMAND com;
		com.CommandID=PEER_FILE_CREATEDIR;
		if(!PeerSendDataS(s,(char*)&com,sizeof(com),&retLen,hEvent))
		{
			goto there;
		}

		strcpy(fi.filename,dir);
		if(!PeerSendDataS(s,(char*)&fi,sizeof(fi),&retLen,hEvent))
		{
			goto there;
		}
		PeerRecvDataS(s,(char*)&com,sizeof(com),&retLen,
							 hEvent);
		CString Mess;
		Mess="创建文件夹:"+dir;
		if(com.CommandID==PEER_CFM_ERR)
		{
			Message(Mess.GetBuffer(Mess.GetLength()),"失败");
			MessageBox("建立文件夹失败");
			goto there;
		}
		else
		{
			Message(Mess.GetBuffer(Mess.GetLength()),"成功");
			rv->Retrive();
		}
		WSACloseEvent(hEvent);
		closesocket(s);
	}
there:
	CDialog::OnOK();
}